A resistor having a resistance value that is programmable according to a digital code can be used as a building block, such as in a variable gain circuit. Its main function is to change resistance according to a digital code, which can be generated in the digital section of a more complex system, such as for the purpose of modifying the gain or attenuation, frequency response, or other parameters, in a controlled and repeatable manner that is appropriate for a digital signal processing environment.
Some applications (such as gain control) need a logarithmic (linear-in-dB) control curve for the resistance value, with the logarithm of the resistance value being a linear function of the control code. As a consequence, the resistance values corresponding to each code are usually irrational numbers, making the circuit design difficult and error-prone in the case of wide-range programmable structures implemented only with switched resistors.
For example, Killen U.S. Pat. No. 5,602,925 is directed toward a hearing aid with a programmable resistor that can provide logarithmic steps between higher values of programmed resistance and linear steps between lower values of programmed resistance.
While additional active stages can be used for coarser steps, e.g., in the case of programmable-gain amplifiers, this can cause additional power dissipation, noise, and distortion. Other approaches, such as using R-2R or power-of-2 resistor networks, are not suitable for logarithmic control. In addition, using capacitors in conjunction with resistor networks such as R-2R for filtering can be unwieldy, requiring more active stages.